/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package br.com.foxinline.manager.criar;

import br.com.foxinline.enums.Situacao;
import br.com.foxinline.modelo.Curso;
import br.com.foxinline.modelo.Disciplina;
import br.com.foxinline.modelo.Docente;
import br.com.foxinline.servico.CursoServico;
import br.com.foxinline.servico.DisciplinaServico;
import br.com.foxinline.servico.DocenteServico;
import br.com.foxinline.servico.UsuarioServico;
import br.com.foxinline.utilitario.Msg;
import java.io.Serializable;
import java.util.ArrayList;
import java.util.List;
import javax.annotation.PostConstruct;
import javax.ejb.EJB;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.ViewScoped;
import javax.faces.model.SelectItem;

/**
 *
 * @author laverson
 */
@ViewScoped
@ManagedBean
public class ManagerCriarDocente implements Serializable {

    @EJB
    DocenteServico docenteServico;
    @EJB
    CursoServico cursoServico;
    @EJB
    DisciplinaServico disciplinaServico;
    @EJB
    UsuarioServico usuarioServico;
    private Docente docente;
    private Disciplina disciplina;
    private List<Disciplina> disciplinas;
    private List<Disciplina> disciplinasSelecionadas;
    private Curso curso;
    private List<Curso> cursos;

    @PostConstruct
    public void init() {
        curso = isAdmin() ? new Curso() : usuarioServico.getCurrentUser().getCurso();
        docente = new Docente();
        cursos = cursoServico.pesquisarTodos();
        disciplinasSelecionadas = new ArrayList<Disciplina>();
        
        handleMudarDisciplinas();
    }

    public void salvar() {
        try {
            docente.setDisciplinas(disciplinasSelecionadas);
            docenteServico.salvar(docente);
            Msg.messagemInfo(Msg.SuccessFull);
            init();
        } catch (Exception e) {
            e.printStackTrace();
            Msg.messagemError(Msg.Failure);
        }
    }

    public List<SelectItem> getSituacao() {
        List<SelectItem> s = new ArrayList<SelectItem>();
        for (Situacao ms : Situacao.values()) {
            s.add(new SelectItem(ms, ms.getNome()));
        }
        return s;
    }

    public void handleMudarDisciplinas() {
        if (curso != null && curso.getId() != null && !isAdmin()) {
            disciplinas = disciplinaServico.pesquisar(curso);
        } else {
            disciplinas = new ArrayList<Disciplina>();
        }
    }
    
    public boolean isAdmin(){
        return usuarioServico.isAdmin();
    }

    public Curso getCurso() {
        return curso;
    }

    public void setCurso(Curso curso) {
        this.curso = curso;
    }

    public List<Curso> getCursos() {
        return cursos;
    }

    public void setCursos(List<Curso> cursos) {
        this.cursos = cursos;
    }

    public Disciplina getDisciplina() {
        return disciplina;
    }

    public void setDisciplina(Disciplina disciplina) {
        this.disciplina = disciplina;
    }

    public List<Disciplina> getDisciplinas() {
        return disciplinas;
    }

    public void setDisciplinas(List<Disciplina> disciplinas) {
        this.disciplinas = disciplinas;
    }

    public List<Disciplina> getDisciplinasSelecionadas() {
        return disciplinasSelecionadas;
    }

    public void setDisciplinasSelecionadas(List<Disciplina> disciplinasSelecionadas) {
        this.disciplinasSelecionadas = disciplinasSelecionadas;
    }

    public Docente getDocente() {
        return docente;
    }

    public void setDocente(Docente docente) {
        this.docente = docente;
    }
}
